package cn.unknowpupil.init.service.gen;

import cn.unknowpupil.init.domain.gen.Dictionary;
import cn.unknowpupil.init.domain.gen.GenTable;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

/**
 * Created at 2020-11-30 by  w10g <br>
 * Initialize GenTable  ... <br>
 *  代码生成业务表 核心业务处理接口
 *
 * @author unknowpupil
 * @since 0.0.1
 */
public interface IGenTableService extends IService<GenTable> {


        /**
         *  删除
         * @param ids {@code Long}   GenTable ID
         * @return {@link GenTable}
         */
        void delete(Long[] ids);



        /**
         * 查询业务列表
         *
         * @param genTable 业务信息
         * @param current 业务信息
         * @param size 业务信息
         * @return 业务集合
         */
        IPage<GenTable> page(int current, int size, GenTable genTable);
        /**
         * 查询业务列表
         *
         * @param genTable 业务信息
         * @param current 业务信息
         * @param size 业务信息
         * @return 业务集合
         */
        IPage<GenTable> selectDbTableList(int current, int size, GenTable genTable);
        /**
         * 查询据库列表
         *
         * @param tableNames 表名称组
         * @return 数据库表集合
         */
        List<GenTable> selectDbTableListByNames(String[] tableNames);

        /**
         * 导入表结构
         *
         * @param tableList 导入表列表
         */
         void importGenTable(List<GenTable> tableList);

        /**
         * 修改保存参数校验
         *
         * @param genTable 业务信息
         */
        void validateEdit(GenTable genTable);
        /**
         * 修改业务
         *
         * @param genTable 业务信息
         * @return 结果
         */
        void updateGenTable(GenTable genTable);

        /**
         * 预览代码
         *
         * @param tableId 表编号
         * @return 预览数据列表
         */
        public Map<String, String> previewCode(Long tableId);

        /**
         * 生成代码（下载方式）
         *
         * @param tableName 表名称
         * @return 数据
         */
        public byte[] downloadCode(String tableName);

        /**
         * 批量生成代码（下载方式）
         *
         * @param tableNames 表数组
         * @return 数据
         */
        public byte[] downloadCode(String[] tableNames);
        /**
         * 生成代码（自定义路径）
         *
         * @param tableName 表名称
         * @return 数据
         */
        public void generatorCode(String tableName);
        /**
         * 同步数据库
         *
         * @param tableName 表名称
         */
        void synchDb(String tableName);

        /**
         * 查询业务信息
         *
         * @param id 业务ID
         * @return 业务信息
         */
        public GenTable selectGenTableById(Long id);
        
        public List<Dictionary> selectDictionaryList(Dictionary dictionary);
}
